이 질문에 이미 답변이 있습니다. Express JS-리디렉션 할 수 없음 (4 답변) 7 년 전에 문을 닫았습니다. 아래 미들웨어와 함께 passportjs를 사용하고 있습니다. 사용자가 특정 사항을 요청할 때 로그인 여부를 확인한다고 가정합니다. 로그인하지 않은 경우 로그인 페이지로 리디렉션되어야합니다. 다음과 같은 요청 경로가 있습니다. app.put ( '/ fantasyteams / : fantasyTeamId', auth.requiresLogin, fantasyteams.update); 이 경로는 사용자가 웹 사이트에서 Fantasy Team이라는 리소스를 업데이트하려고 할 때 호출됩니다. auth.requiresLogin은 다음과 같은 미들웨어입니다. exports.requiresLogin = function (req, res, next) { if (req.isAuthenticated ()) { next () 반환 } return res.redirect ( "/ signin"); }; 사용자 로그인 후 세션 쿠키를 삭제하여 세션 만료를 시뮬레이션했습니다. 그 후 웹 사이트를 통해 판타지 팀 번호 123을 업데이트 해 달라는 PUT '/ fantasyteams / 123'요청을했습니다. fantasyteams.update는 단순히 mongodb / mongoose 저장 작업입니다. exports.update = function (req, res) { var fantasyteam = req.fantasyteam; fantasyteam = _.extend (fantasyteam, req.body); fantasyteam.save (function (err) { res.jsonp (fantasyteam); }); }; 예상대로 위의 라우트 핸들러 (app.put ...)가 요청을 포착하여 auth.requiresLogin 미들웨어에 전달하여 사용자가 로그인했는지 확인합니다. 그래서 삭제했기 때문에 사용자가 로그인되지 않은 것으로 나타났습니다. 그의 세션 쿠키. res.redirect가 예상대로 호출됩니다. 그러나 웹 사이트는 로그인 페이지로 리디렉션되지 않습니다. node.js 명령 로그에 다음이 표시됩니다. PUT / 로그인 404328ms 내가 뭘 잘못 했어?
2021-02-25 08:21:13
문제는 PUT / signin에 대한 경로 처리기가 없다는 것입니다. 원래 요청은 넣기 였으므로 리디렉션 될 때 여전히 브라우저의 동일한 'put'요청의 일부입니다. app.all ( '/ signin')을 사용하여 put / post / whatever에 대한 핸들러를 추가하십시오. 삼 | 찾고있는 답변이 아닙니까? node.js 세션 쿠키 익스프레스 passport.js 태그가있는 다른 질문을 찾아 보거나 직접 질문하십시오.